﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using RESTServices.Dominio;
using RESTServices.Persistencia;

namespace RESTServices
{
    public class Itinerarios : IItinerarios
    {
        private ItinerarioDAO dao = new ItinerarioDAO();

        public string CrearItinerario(Itinerario itinerarioACrear)
        {
            string mensaje = "";

            if (itinerarioACrear.Id_Destino == itinerarioACrear.Id_Origen)
                mensaje = "La ciudad de Origen no puede ser igual a la ciudad Destino";
            else if (itinerarioACrear.Salida == itinerarioACrear.Llegada)
                mensaje = "La fechas de salida y llegada no pueden ser iguales";
            else if (itinerarioACrear.Llegada < itinerarioACrear.Salida)
                mensaje = "La fecha de llegada no puede ser menor a la fecha de salida";
            else
                mensaje = dao.Crear(itinerarioACrear);

            return mensaje;
        }

        public Itinerario ObtenerItinerario(string Id_Itinerario)
        {
            return dao.Obtener(int.Parse(Id_Itinerario));
        }

        public string ModificarItinerario(Itinerario itinerarioAModificar)
        {
            string mensaje = "";

            if (itinerarioAModificar.Id_Destino == itinerarioAModificar.Id_Origen)
                mensaje = "La ciudad de Origen no puede ser igual a la ciudad Destino";
            else if (itinerarioAModificar.Salida == itinerarioAModificar.Llegada)
                mensaje = "La fechas de salida y llegada no pueden ser iguales";
            else if (itinerarioAModificar.Llegada < itinerarioAModificar.Salida)
                mensaje = "La fecha de llegada no puede ser menor a la fecha de salida";
            else
                mensaje = dao.Modificar(itinerarioAModificar);

            return mensaje;
        }

        public void EliminarItinerario(string Id_Itinerario)
        {
            dao.Eliminar(int.Parse(Id_Itinerario));
        }

        public List<Itinerario> ListarItinerarios()
        {
            return dao.ListarTodos();
        }

        public List<Ciudad> ListarOrigenes()
        {
            return dao.ListarOrigenes();
        }

        public List<Ciudad> ListarDestinos()
        {
            return dao.ListarDestinos();
        }
    }
}
